package com.qt.regex;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo02 {



    public static void main(String[] args) throws Exception {

        //tjpq();
        /*
        1. 贪婪爬取&&非贪婪爬取
            只写 + 和 *表示贪婪匹配
            +? 非贪婪匹配
            *? 非贪婪匹配
         细节：java中默认的是贪婪爬取；
            如果在数量词 + * 后面加? 代表的就是非贪婪爬取
         */
        String str = "abbbbbbbbb";
        String regex1 = "ab+";
        String regex2 = "ab+?";
        String regex3 = "ab*";
        String regex4 = "a(b*?)";
        Pattern p = Pattern.compile(regex4);
        Matcher m = p.matcher(str);
        while (m.find()){
            System.out.println(m.group());
        }


    }

    private static void tjpq() {
        //?理解为前面的数据java
        //=表示后面要跟随的数据
        //获取的时候只获取前半部分
        String str = "java8说的话并非是对方还是得干活，java11首尔分红设佛java11啥地方啥地方java11是对方挂电话"
                + "JaVa17石锅豆腐客户收到发";
        String regex1 = "((?i)java)(?=8|11|17)";//打印不带 8 11 17

        String regex2 = "((?i)java)(8|11|17)";//打印带 8 11 17
        String regex3 = "((?i)java)(?:8|11|17)";//打印带 8 11 17

        String regex4 = "((?i)java)(?!8|11|16)";//打印不带 8 11 17（!表示否的意思不是8,11,16结尾的）
        Pattern p = Pattern.compile(regex4);
        Matcher m = p.matcher(str);
        while (m.find()){
            System.out.println(m.group());
        }
    }


}
